#pragma once
#include<string>
#include<iostream>
#include<cstdarg>
#include<ctime>
//日志要有日志级别的
#define DEBUG 0
#define NORMAL 1
#define WARNING 2
#define ERROR 3
#define FATAL 4

const char* gLevelMap[5]={
    "DEBUG",
    "NORMAL",
    "WARNING",
    "ERROR",
    "FATAL"
};
//完整的日志功能，至少有：日志等级,时间，日志内容 支持用户自定义(文件行，文件名，日志内容)
void logMessage(int level,const char* format,...)
{
    char stdBuffer[1024];//标准部分：包含时间等信息
    time_t timestamp=time(nullptr);
    snprintf(stdBuffer,sizeof(stdBuffer),"[%s] [%ld]",gLevelMap[level],timestamp); 
// struct tm* localtime=(struct time*)localtime(&timestamp);
// localtime
//    va_list ap;//val_list就是char*类型指针
//    va_start(ap,format);//根据format末尾地址记录可变参数起始地址
//    int x=va_arg(ap,int);//根据所要读的类型得到要读几个字节，读参数
//    va_end(ap);//ap=nullptr，将ap置空
   char logBuffer[1024];//自定义部分
   va_list args;
   va_start(args,format);
  // vprintf(format,args);
   vsnprintf(logBuffer,sizeof(logBuffer),format,args);
   va_end(args); 
   printf("%s %s\n",stdBuffer,logBuffer);    
}